import java.awt.Point;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;

/**
 * Classe responsavel por monitorar os movimentos e coordenadas do mouse
 * @author [Grupo 8 - ST662]
 *
 */
public class MonitoradorMouse implements java.awt.event.MouseListener, MouseMotionListener {
	
	private Desenho d;
	
	/**
	 * Metodo responsavel por monitorar o mouse
	 * @param drawing
	 */
	public MonitoradorMouse(Desenho drawing){
		d = drawing;
	}

	/**
	 * Metodo responsavel por pegar a cordenada do mouse quando clicado
	 */
	@Override
	public void mouseClicked(MouseEvent me) {
		int x = me.getX();
		int y = me.getY();
		TelaDesenho.deletarObjeto(new Point(x,y));

	}

	@Override
	public void mouseEntered(MouseEvent arg0) {

	}

	@Override
	public void mouseExited(MouseEvent arg0) {

	}
	
	/**
	 * Meotodo responsavel por pegar as cordenadas do mouse quando ele estiver sendo pressionado (arrastando)
	 */
	@Override
	public void mousePressed(MouseEvent grab) {
		if (!TelaDesenho.formaCorrente.equals("") && !TelaDesenho.deletar){
			int px = grab.getX();
			int py = grab.getY();
			TelaDesenho.p1 = new Point(px, py);
			if(TelaDesenho.formaCorrente == TipoForma.Linha){
				TelaDesenho.temporario = new FormaDesenho(TelaDesenho.formaCorrente, px, py, px, py);
			} 
			else{
				TelaDesenho.temporario = new FormaDesenho(TelaDesenho.formaCorrente, px, py, 0, 0);
			}
			d.repaint();
		}
		

	}

	/**
	 * Metodo responsavel por obter as cordenadas do mouse quando o botao for solto
	 */
	@Override
	public void mouseReleased(MouseEvent release) {
		if (!TelaDesenho.formaCorrente.equals("") && !TelaDesenho.deletar){
			int rx = release.getX();
			int ry = release.getY();
			TelaDesenho.p3 = new Point(rx, ry);
			TelaDesenho.adicionarForma();
			d.repaint();
		}

	}
	/**
	 * Metodo responsavel por obter as cordenadas do mouse quando ele arrasta uma figura
	 */
	public void mouseDragged(MouseEvent drag){
		if (!TelaDesenho.formaCorrente.equals("") && !TelaDesenho.deletar){
			int dx = drag.getX();
			int dy = drag.getY();
			TelaDesenho.p2 = new Point(dx, dy);
			TelaDesenho.atualizarForma();
		}
		
	}

	@Override
	public void mouseMoved(MouseEvent arg0) {
		
	}

}
